package com.ruoyi.safe.service;

import com.ruoyi.quality.domain.TQualityFileItem;
import com.ruoyi.safe.domain.BizProjectCheck;
import com.ruoyi.safe.domain.dto.StatisticsDto;
import com.ruoyi.safe.domain.vo.ListRequestVo;

import java.util.List;

/**
 * 项目自检Service接口
 *
 * @author ruoyi
 * @date 2023-11-17
 */
public interface IBizProjectCheckService
{
    /**
     * 查询项目自检
     *
     * @param id 项目自检主键
     * @return 项目自检
     */
    public BizProjectCheck selectBizProjectCheckById(Long id);

    /**
     * 查询项目自检列表
     *
     * @param bizProjectCheck 项目自检
     * @return 项目自检集合
     */
    public List<BizProjectCheck> selectBizProjectCheckList(BizProjectCheck bizProjectCheck);

    /**
     * 新增项目自检
     *
     * @param bizProjectCheck 项目自检
     * @return 结果
     */
    public int insertBizProjectCheck(BizProjectCheck bizProjectCheck);

    /**
     * 新增项目自检
     *
     * @param bizProjectCheck 项目自检
     * @return 结果
     */
    public int insertBizProjectCheckNoLogin(BizProjectCheck bizProjectCheck);
    /**
     * 修改项目自检
     *
     * @param bizProjectCheck 项目自检
     * @return 结果
     */
    public int updateBizProjectCheck(BizProjectCheck bizProjectCheck);

    /**
     * 修改项目自检
     *
     * @param bizProjectCheck 项目自检
     * @return 结果
     */
    public int updateBizProjectCheckNoLogin(BizProjectCheck bizProjectCheck);
    /**
     * 批量删除项目自检
     *
     * @param ids 需要删除的项目自检主键集合
     * @return 结果
     */
    public int deleteBizProjectCheckByIds(Long[] ids);

    /**
     * 删除项目自检信息
     *
     * @param id 项目自检主键
     * @return 结果
     */
    public int deleteBizProjectCheckById(Long id);

    /**
     * 查询任务已下发的数量
     * @return
     */
    int selectCount(ListRequestVo listRequestVo);

    /**
     * 查看手机端登录用户的项目自检数据
     * @param bizProjectCheck
     * @param userName
     * @return
     */
    List<BizProjectCheck> selectProjectCheckListForApp(BizProjectCheck bizProjectCheck,String userName);

    /**
     * 任务结束，状态修改为“任务已结束”
     * @param bizProjectCheck
     * @return
     */
    public int updateProjectCheckStatus(BizProjectCheck bizProjectCheck);

    /**
     * 根据自检id查询
     * @param projectCheckId
     * @return
     */
    BizProjectCheck selectListByCheckId(Long projectCheckId);

    Long countByStatisticsDto(StatisticsDto statisticsDto);

    /*查询项目自检待办*/
    List<BizProjectCheck> selectProjectCheckListForQuality(BizProjectCheck bizProjectCheck);

    int splitFiles(List<TQualityFileItem> listFileItems);

    List<TQualityFileItem> getQualityProblemList(String fileId);
}
